package com.summer.user.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.summer.user.pojo.User;
import com.summer.user.pojo.UserLogin;

/** 
 * @描述：用户的 Mapper 接口
 * @作者：yang 
 * @时间：2017年6月22日 下午4:43:30 
 * @版本：1.0
 */
@Mapper
public interface UserMapper {
	
	User selectById(Integer id);
	
	/** 根据帐号密码，查询用户信息，判断是否登录成功 */
	UserLogin selectLogin(@Param("username") String username, @Param("password")String password);

    /** 忘记密码时，根据帐号，获取注册邮箱 */
    String selectEmailByUsername(String username);
    
    /** 根据用户名查看是否存在该用户*/
    int checkUsername(String username);

    /** 根据邮箱查看是否存在该用户*/
    int checkEmail(String email);

    /** 检查排除自身之外，还有没有 email 的注册邮箱 */
    int checkEmailByUserId(@Param("email")String email,@Param("userId")Integer userId);
    
    /** 检查排除自身之外，还有没有 username 的注册邮箱  */
    int checkUsernameByUserId(@Param("username")String username,@Param("userId")Integer userId);
    
    /** 修改密码时，检查密码和用户是否对应 */
    int checkPassword(@Param("password")String password,@Param("userId")Integer userId);
    
    /**TODO 用户状态 是否激活 */
    //int deleteById(Integer id);

	/** 根据非空属性增加用户 */
    int insertSelective(User user);
	
	/** 根据非空属性更新用户 */
    int updateByIdSelective(User user);
    
    /** 根据email，修改密码 */
    int updatePasswordByEmail(@Param("email")String email, @Param("passwordNew")String passwordNew);

    /** 登录状态下，根据userId修改密码 */
    int updatePasswordById(@Param("userId")Integer userId, @Param("passwordNew")String passwordNew);
}
